SimCLR框架解析 |
您所在的位置:网站首页 › activate sim › SimCLR框架解析 |
文章目录
前言机器要怎么做才能学习?simCLR 框架简介simCLR的步骤1. 准备数据集,假设有一个很多很多很多图片的数据集2. 数据增强(Data augmentation)3. 一个batch = 2图片组,增强后得到4张图片。4. 通过encoder得到图片表示5. 映射图片(Projection Head)6. 调试模型(tuning model)6.1 计算余弦相似度6.2 计算损失(loss calculation)
Downstream tasks结论References
前言
对比学习来自于一个朴素的想法,想像一下我们找出最像猫的照片的过程 看一眼猫,对比找出哪个最类似,最后做出判断 通过这个简单思想的启发,有人提出了”对比学习“的概念 大佬们想把机器训练成可以识别相似与或者不相似的图片: 机器要怎么做才能学习?与目标相似/不相似的图片 图片的表示方式 能够判断两幅图片的相似程度 simCLR 框架简介Self-supervised learning implemented by contrastive learning 框架流程简介: 输入一张图片(e.g. cat)对图片随机变换,生成两张增强的图片得到图片增强后的数据表示 x i , x j x_i, x_j xi,xj通过 encoder 得到 image representation h i , h j h_i, h_j hi,hj再通过non-linear全连接层的到数据的表示 z i , z j z_i, z_j zi,zj最终目标是最大化 z i , z j z_i, z_j zi,zj的相似度 simCLR的步骤 1. 准备数据集,假设有一个很多很多很多图片的数据集 2. 数据增强(Data augmentation) 举个例子,从数据集中,分组,两张图片为一组(Batch size = 2) 论文实现中,Batch size = 8192. 构造函数对图片进行“增强”,比如随机裁剪(crop),翻转(flip),颜色抖动(color jitter),调整灰度(grayscale)。r a n d o m ( c r o p + f l i p + c o l o r j i t t e r + g r a y s c a l e ) random (crop + flip + color jitter + grayscale) random(crop+flip+colorjitter+grayscale) 效果如下: 3. 一个batch = 2图片组,增强后得到4张图片。B a t c h s i z e ∗ 2 Batch \ size * 2 Batch size∗2 效果如下: 4. 通过encoder得到图片表示(Find image representation based on encoder) 读者可能好奇encoder是什么,论文用ResNet-50结构作为卷积网络encoder,得到一个1*2048的表示: 5. 映射图片(Projection Head)上面我们得到图片的增强表示 h i , h j h_i, h_j hi,hj, 然后经过一系列非线性的Dense-Relu-Dense层,最后又把图片映射表示为 z i , z j z_i, z_j zi,zj. 6. 调试模型(tuning model)别忘了我们上文batch size = 2, 也就是说, 最后生成了4个向量 z 1 , z 2 , z 3 , z 4 z_1, z_2, z_3, z_4 z1,z2,z3,z4. 接下来我们要计算图片经过一系列编码器,图片变换之后的的损失(loss)。 6.1 计算余弦相似度原理很简单, c o s < x , y > = x ∗ y ∣ ∣ x ∣ ∣ ∗ ∣ ∣ y ∣ ∣ cos = {\frac{x*y}{||x|| * ||y||}} cos=∣∣x∣∣∗∣∣y∣∣x∗y 注意,这里的 τ \tau τ 是温度参数(temperature parameter),它可以适当放缩相似度的计算,可以让相似度不限于 [ − 1 , 1 ] [-1, 1] [−1,1]。然后一个batch里面最后得到的4张图片, 两两相似度计算,得到下面的结果: 6.2 计算损失(loss calculation)SimCLR使用了一种叫做 NT-Xent loss 的损失函数,全称 Normalised Temperature-Scaled Entropy Loss。该损失函数的原理是: 把增强的图片对取出来: 用Softmax函数去得到图片pair的相似度, 比如: 第一张图片作为参考,计算另外三张图片,哪个最像? 计算损失函数 (Noise Contrastive Estimation(NCE) Loss) Softmatx取一个负log: 图片对调换一下,再算一次: 最后终于。。对所有的图片对(一个图片随机增强变换成的两个图片),取一个平均,得到损失值Loss。 依据这个Loss,encoder 和 projection head表示可以一步一步地变强。 Downstream tasks通过上文地对比学习, SimCLR模型训练完成后,该模型可以用于迁移学习。这里主要用训练出地encoder来迁移学习。 结论开拓自监督学习地领土,击败一众框架,性能SOTA(STATE-OF-THE-ART)。 References Paper: ‘A simple framework for constrastive learning’Blog of Amit Chaudhary introducing SimCLR |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |